home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Original Shareware 1.1
/
The Original Shareware (WeMake CDs)(Volume 1.1)(CDs, Inc)(1993).iso
/
2
/
vmix222.exe
/
lha
/
MANUAL.DOC
< prev
next >
Wrap
Text File
|
1989-03-05
|
146KB
|
6,915 lines
-----------------------
|
|
|
V M i X 2 8 6 |
|
for |
|
MSDOS Environments |
|
|
|
Multiuser Operating |
Supervisor |
|
for the |
|
I B M PC / XT / AT |
|
|
Version 1.4X |
|
|
-----------------------
By
J. Anthony Borras
Commercial Software Associates
Post Office Box 185
Corona del Mar, California 92625
(714) 721-9953
IBM PC/XT/AT are trademarks of the IBM Corp.
This manual was written by:
Commercial Software Associates
Post Office Box 185
Corona del Mar, California 92625
COPYRIGHT NOTICE
Copyright (c) 1988 by: J. Anthony Borras
All rights reserved
No part of this program or related
documentation may be copied, reproduced,
stored in a retrieval system, or
transmitted in any form or by any means
electronic, mechanical, photocopied,
recorded, or thereby translated into any
language, without the prior written
permission of the publisher. You may
only make a copy of the program for
backup purposes.
LIMITED SHAREWARE LICENSE
- VMiX 286 may be copied for others to
tryout, subject to the following copying
restrictions specified by this time
limited license:
All copies distributed to others
must include a copy of the Copyright
Notice, the Limited Shareware License,
Disclaimer of All Warranties and
Liabilities, and the Software License
Agreement.
A registration fee of $59 is solicited
from personal users (up to 3 CPU's) as
a condition of continued use of the
program beyond a trial usage period of
30 days.
- The party agrees that unauthorized
usage under this agreement will cause
great damage to the licensor, Commercial
Software Associates.
page 2
Basic Prices
REGISTRATION fee ................. $59.
SOURCE license ................... $499.
(+$440, if upgrade from registration fee)
UPGRADE Version 1.XX ............ $20.
page 3
Disclaimer of
All Warranties and Liabilities
Commercial Software (ComSoft) Associates
makes no warranties, either expressed or
implied, with respect to this manual or
to the software described there in, its
quality, performance, merchantability,
or fitness for any particular purpose.
VMiX 286 is sold or licensed `as is',
and is for use by the original
purchaser only, except as expanded by
the Limited Shareware License described
above. The entire risk, as to the
quality and performance, of the VMiX
experimental system is with the buyer.
In the event of loss or damage caused
or alleged to be caused by the VMiX 286
program, the buyer (and not ComSoft, its
distributors, or its retailers) assumes
the entire cost of all necessary
servicing, repair, or correction and
any incidental or consequential damages
resulting from any defect in the
software or its use, even if ComSoft has
been advised of the possibility of such
damages.
page 4
SOFTWARE LICENSE AGREEMENT
The party, whose signature appears
below, agrees that they will utilize the
software entitled `VMiX 286' exclusively
for their private use in their own
personal system, not to exceed 3 CPU's.
The party agrees that all copies of the
VMiX 286 software package are the
property of Commercial Software
Associates, Westwood California and that
all copies will display the original
copyright.
The party agrees that the location
of all copies will be reported to
Commercial Software upon written demand.
The licensee agrees to fill out and mail
this registration form and license
within 30 days of the start of the try-
out period specified by the Limited
Shareware License shown above. Support
will be provided to registered licensees
only.
The party agrees that unauthorized
usage under this agreement will cause
great damage to the licensor, Commercial
Software Associates.
Unless this agreement is returned
to Commercial Software and registration
fee is paid upon expiration of the
Limited Shareware License, it will not
be possible to inform the purchaser of
any updates, additions, or corrections
to this software package or accompanying
manual.
page 5
RETURN TO:
Commercial Software Associates
Post Office Box 185
Corona del Mar, Ca. 92625
SERIAL NUMBER: ____________________
NAME ________________________________
name
COMPANY/TITLE __________________________
company title
ADDRESS __________________________
street
__________________________
city state zip
TELEPHONE ( ) -
phone
Signature: __________________________
page 6
page 7
FEATURES of VMiX 286
VERSION 1.4X First Level Release
Distributed as shareware in continued
development state.
- VMiX is not presently a full operating
system. It provides the services of a
multiuser operating system supervisor.
The VMiX kernel ties tightly between
the host operating system I/O services
and the user applications. The eventual
goal of the VMiX kernel is to arbitrate
use of system resources by individual
tasks with either or both UNIX I/O or
MSDOS I/O, in an environment providing
up to 16 megabytes of physical memory.
- VMiX incorporates enhanced multi-
tasking support. The console screen can
be automatically partitioned into up to
four windows, for a total of 4 tasks
executing from the console. The active
task controls and responds to the
console keyboard. The active task can be
switched, at any time, by pressing the
hot key, Shift-Tab.
- VMiX provides concurrent multiprocess
capabilities to the host operating
system, which will still service most of
the low level interface to the computer
hardware. NOTE: MSDOS disk driver
reentrancy problems are not addressed by
this release. If two tasks are
requesting disk I/O, one is placed in
IOWAIT by VMiX, while the other
completes a disk sector access.
page 8
- VMiX release 1.4X does not operate in
286 protected mode at all times. Hence,
it can be used in 8088 PCs. System
services are provided in sysgate.asm to
execute your own functions in protected
mode. The debugger "assign gdt" method
allows entries to the VMiX gdt. This
can also be done with the memory manager
system service.
- REMOTE permits a user to call a remote
PC running VMiX, and teleoperate, as if
he were at the console of the remote PC.
Useful for remote customer support of
application programs, offsite login and
operations. VMiX terminal drivers offer
CGA text mode and IBM function key
emulation at a COMM port. Only the
remotely accessed PC needs to be execut-
ing VMiX.
- With VMiX you can run programs like
WINDOWS, LOTUS 123, XTALK, BASIC, DBASE,
or WORD at the console and BASIC, DEBUG,
TURBO PASCAL, WORDSTAR 3.2 or 4/0, DBASE
II/III, or PROCOMM at a COMM terminal.
Multiple BASIC or GWBASIC interpreter
sessions are supported.
- Supports a maximum of five users (only
because of COMM limitations), each with
multiple processes up to a maximum of 10.
- SPAWN or '&' permits a script of VMiX
shell commands to be submitted to a
background process executing the VMiX
shell. This allows for background jobs
like compiling or printing by a
concurrent child process.
page 9
- DOSJOB permits MSDOS keyboard inter-
active applications to be partitioned
and managed as concurrent video display
window tasks.
- SWAP will move tasks from/to conven-
tional memory and store them in extended
memory for later resumption.
- Automatic or User specified windows in
both alphanumeric and hires graphics
modes, from either the console or VT-100
COMM terminal.
- Loadable character fonts, 33 line CGA
display. Version 1.4X provides support
for EGA video modes and up to 58 line
display, with VMiX font type 1.
- Console operator status line and
passive fault-tolerance.
- Built-in debugger.
- Memory manager and memory mapper.
- Assembly and C language interface.
- Interrupt 15h System Services.
- VMiX 286 requires MSDOS 2.10 or above,
and 320K of memory to execute. It will
adjust to and recognize, either an 8088
IBM PC, an 80286 IBM AT, or 100% clone.
page 10
page 11
PREFACE
This manual is divided into Three Parts.
They are:
PART ONE HOW TO GET STARTED
How to Get Started: This part of the
manual covers the preparation required
to use VMiX 286 effectively. It provides
information on how to install the
shipped system.
PART TWO USING VMiX 286
General Use: This part of the manual
contains a detailed description of the
various features of VMiX 286. It
provides a step-by-step guide to the use
of the operating system's commands.
Also included are notes describing
useful features and those areas where
extra caution is recommended.
Advanced Use: This part of the manual
contains useful information regarding
the internal functions of the operating
system. It describes procedures for
writing programs that utilize the VMiX
system services and explores in detail
the external interface.
PART THREE APPENDICES
Appendices: This part of the manual
contains various appendices, including
release notes, a Technical Section, and
a description of VMiX status messages.
page 12
page 13
---------------------------------------
|
|
|
|
|
CONTENTS |
|
|
|
|
|
---------------------------------------
INTRODUCTION Page
Copyright Notice 2
Software License Agreement 5
Features of VMiX 286 8
Preface 12
Table of Contents 14
List of Figures 18
PART ONE: -How to Get Started-
Page
Title Page 1
Introduction 3
How to Get Started 7
Commands Overview 15
Shell Commands 15
Command Summary 18
Contents 14
PART TWO: -Using VMiX 286-
Page
Title Page 1- 1
VMiX Start-Up 1- 3
Interface to MSDOS 1- 4
VMiX Configuration 1- 7
Using the Command Line 1- 8
System Console Display 1-12
Shell Commands 1-14
Login Terminals 1-16
Terminal Types 1-17
IBM Function Keys 1-18
Communications 1-20
Extended Memory 1-21
The Root Shell 2- 1
Command 1 - debug 2- 3
Command 2 - rshell 2- 4
Command 3 - remote 2- 5
Command 4 - swap 2- 8
Command 5 - chprio 2- 9
Command 6 - exec 2-11
Command 7 - dosjob 2-15
Command 8 - spawn 2-17
Command 9 - kill 2-20
Command 10 - quit 2-22
Contents 15
PART TWO: -(Continued)-
Page
The Debugger Shell 3- 1
Command 1 - read 3- 3
Command 2 - write 3- 4
Command 3 - assign 3- 5
Command 4 - deassign 3- 9
Command 5 - init 3-11
Command 6 - examine 3-12
Command 7 - set 3-13
Command 8 - quit 3-24
Utility 9 - monitor 3-25
Advanced Use 4- 1
Contents 16
PART THREE: -Appendices-
Page
Title Page A- 1
Appendix A Release Notes A- 3
Problem Reports A- 7
Appendix B VMix System Services B- 1
Appendix C Technical Information C- 1
Appendix D Status Monitor D- 1
Contents 17
---------------------------------------
|
|
|
|
|
FIGURES: |
|
|
|
|
|
---------------------------------------
PART ONE:
FIGURE DESCRIPTION Page
Fig. 1 VMiX Start-up Screen 15
2 VMiX Debugger Screen 17
3 VMiX Command Summary 20
Contents 18
PART TWO:
FIGURE DESCRIPTION Page
Fig. 4 COMMON TERMINALS 1- 9
5 Terminal Function Key Emulation 1-19
6 Object type name definitions 3- 6
7 SRCSINK object id's 3- 6
8 Color Keys 3-19
9 Color Codes 3-20
10 Root Window Sizing 3-21
PART THREE:
FIGURE DESCRIPTION Page
Fig. A-1 VMiX Status Board A- 5
A-2 VMiX 286 Conventions A- 6
C-1 VMiX 286 O/S Hierarchy C- 3
C-4 VMiX 286 Synchro Primitives C- 4
C-5 VMiX 286 Scheduler C- 5
C-6 VMiX 286 Structures C- 6
C-7 VMiX 286 Queue Structures C- 7
C-8 VMiX 286 Object Model C- 8
C-9 VMiX 286 I/O Objects C- 9
C-10 vm_boot Structure Chart C-10
C-11 vm_shell Structure Chart C-11
Contents 19
TABLE DESCRIPTION Page
Table C-1 VMiX Global Data C-12
Contents 20
PART ONE
VMiX 286
HOW TO GET STARTED
Part I, Introduction page 1
Part I, Introduction page 2
C O M S O F T VMiX 286
INTRODUCTION
VMiX 286 provides a multitasking
and multiuser environment for the new
evolving personal workstations. VMiX
retains some of the freedom, control,
and general access to the system that
existed during the earlier days of
personal computing.
VMiX enhances your computing envi-
ronment in several ways. First you can
view information from several programs
simultaneously using VMiX's console
windowing capabilities. You can also
multitask, not just execute in the back-
ground, but in each of the windows. You
can also give the full screen to one or
more programs. Since VMiX is a multi-
user environment, not just a windowed
multitasking shell, you can also support
several workstations or modems at your
computer's serial ports.
VMiX also provides the choice to
load tasks that can be swapped out to
extended 286 memory, interrupted and
made active again, at your command. This
virtual memory capability, to load more
programs than you have conventional
memory to execute-in, is enhanced by the
additional capability to execute swapped
programs, while they are swapped.
Part I, Introduction page 3
C O M S O F T VMiX 286
It is possible that as personal
computer hardware reaches new levels of
speed and complexity, control of
operating kernels will revert to the
manufacturer, like has been the case
with mini-computers and mainframes.
Systems like VMiX provide an alternative
to users of the new personal computers.
The ability to develop creative,
highly custom applications which manipu-
late the total system will probably be
lost if new independent environments are
not implemented for the OS/2 world.
Since with MSDOS, this was unnecessary,
we have complacently left the area of PC
control program development to computer
manufacturers or to large dedicated
system houses; there is a substantial
amount of catch-up involved in creating
a new independent platform.
Because of the scope of the VMiX
project, some areas have been kept
initially simple. This is a mixed
blessing that limits the capability of
VMiX to operate satisfactorily with a
larger volume of existing software.
VMiX, allows applications to start
with full kernel privileges, as all
MSDOS environment applications have, in
the past. After initialization, the
application can move itself to the
desired protection level. In some
commercial environments, with the
concept of trusted hosts, this might be
Part I, Introduction page 4
C O M S O F T VMiX 286
highly risky. However, not all personal
computer applications need to be crash
proof, if you loose the ability to
develop custom applications.
Most of the effort, so far, has
been concentrated in the development of
the process manager and preemptive
scheduler. Process management is, there-
fore, substantially robust, except that
a hi-resolution clock has not yet been
implemented. VMiX is still limited by
the resolution of the 55 millisecond
time-of-day clock. This produces approx-
imately 18 task switches per second and
can result in yerky scrolling of the
video display.
File management within the VMiX
object manager is not implemented.
Hence, there presently are limitations
with I/O redirection.
The VMiX memory object manager is
about 75% complete. So, conflicts still
exists when VMiX relies on the MSDOS
memory manager to do things right from a
multiprogramming standpoint. VMiX does
provide access to 286 protected mode
memory. This memory is called extended
memory. Version 1.4X uses this area to
swap programs that do not fit in conven-
tional memory. The VMiX Application
Program Interface (API) allows programs
to be executed in protected mode.
Part I, Introduction page 5
C O M S O F T VMiX 286
The tty driver, which handles EGA/
CGA/MDA video modes at the console and
character I/O to the serial devices is
relatively robust. Direct video access
can not be redirected until full 386
operations are attained. There are
programs that just can not run on a dumb
terminal (if only, just because the
keyboard layout is too limiting). An
interprocess communications manager to
service requests from other serially
connected PCs running VMiX is not yet
included in VMiX, but is a high priority
objective.
Part I, Introduction page 6
C O M S O F T VMiX 286
HOW TO GET STARTED
GENERAL:
VMiX 286 is designed for use on the
IBM Personal Computer, IBM AT, or other
compatible computers running under the
MSDOS 3.10+ operating system. Two floppy
disk drives, or a hard disk are
recommended. Memory requirements are
320K of RAM, but a full 640K is
desirable for multiuser operations.
At least 1 megabyte of memory and an
80286 processor is required for extended
memory task swapping. Swapped tasks are
temporarily suspended until swapped back
to conventional memory (the first mega-
byte of Intel address space).
The color graphics adapter, CGA, is
recommended for a 640 x 200 console
display. Version 1.4X is a prototype
system intended mostly for Intel 8086
Real Mode, however 386 Protected Mode is
planned for implementation in Version 2.
The present kernel resource supervisor
incorporates data structures compatible
with the Intel 80286 protected mode and
provides for the execution of conforming
functions in protected mode.
To successfully use the varied
features of VMiX 286 it is necessary to
carefully read parts I and II of this
manual COMPLETELY before use.
Part I, How to Get Started page 7
C O M S O F T VMiX 286
BEFORE using VMiX 286, copy all the
files described below, from the Shipping
Diskette to a formatted System Disk that
includes your MSDOS operating system.
NEVER use the Shipping Diskette to
actually run VMiX 286. Use the copies
that you have made from it and keep the
Master Disk in a secure, cool place. If
you have a problem with your program
that is related to the Work Disk,
insert another copied disk to check
out the problem. Do not use the Master
Disk, there may be a failure in the
computer system that could destroy the
information contained on it. For this
reason, it is wise to maintain two work
copies of the Master Disk at all times.
Part I, How to Get Started page 8
C O M S O F T VMiX 286
The VMiX 286 System consists of
the twenty one files described below.
MASTER DISK CONTENTS
VM_BOOT.EXE - The VMiX
start-up program. To start, type
VM_BOOT from MSDOS's A> prompt and
press <RETURN>.
PS.EXE - Utility
executed by user to view process staus.
DSTAT.EXE - Utility
executed by user to view device and
channel status.
DPATH.EXE - Utility
executed by user, to set the directory
search PATH for data files.
MONITOR.EXE - Utility
executed by user to monitor process
information and system status.
SYSGATE.OBJ - Link file
for VMiX (API) Application Programming
Interface.
SOURCE FILES: DOCUMENTATION FILES:
SYSGATE.ASM READ.ME
MONITOR.C DPATH.DOC
DSTAT.C PS.C MANUAL.DOC
C_BIOS.H $_PROC.H
$_KERNEL.H IO_CHAN.H
$_CONFIG.H IO_IRP.H
$_MEM.H IO_OBJ.H
Part I, How to Get Started page 9
C O M S O F T VMiX 286
I N S T R U C T I O N S
1) Upon receipt of your SHIPPING
Diskette, copy the five files:
VM_BOOT.EXE, PS.EXE, DSTAT.EXE,
MONITOR.EXE and DPATH.EXE
onto your own System Diskette.
2) Using your editor, create a file
named CONFIG.SYS. Include the
following two lines:
BUFFERS = 15 (or more)
FILES = 20
and, save the file to your system
boot disk.
3) To execute the VMiX 286 program
requires MSDOS Version 2.10 or
above, and 320K of memory. A color
graphics card, CGA is recommended
for the console display.
Release 1.4X does not operate in
286 protected mode at all times, so
it will execute properly in PCs
with 8088 processors. Start VMiX
by typing:
A> VM_BOOT<RETURN>
If you have a Monochrome Adapter,
VMiX will sense it.
Part I, How to Get Started page 10
C O M S O F T VMiX 286
4) The RS232 cabling for COM1 and/or
COM2 should be constructed
depending on whether the host PC
will be connected to a dumb
terminal or to another PC acting as
a terminal.
PIN PIN
H 1 1
O
S 2 -- - _ _ _ - -- 2
T -_ __ - -
3 __ _ - - - - _ __ 3 T
S E
e 4 4 R
r M
i --5 5 I
a -| N
l | --6 6 A
| L
P | 7 ------------------------- 7
o |
r | --8 8
t -|
--20 20
See Part II, Using VMiX 286, for
detailed instructions regarding the use
of VMiX 286 commands and options.
Part I, How to Get Started page 11
C O M S O F T VMiX 286
Some conventions used in the manual are:
[ ] = Indicates that what is contained
between the braces is optional.
xxxx = Used to represent alphanumeric
characters within a prompt.
Example: `ENTER FILENAME? xxxx'
???? = Used to represent numeric
characters within a prompt.
Example: `set remote -c????'
< > = Used to indicate a specific
keyboard key.
Example: `Press <RETURN>'
[ ] = Used to indicate a specific
function key or numeric keypad
key.
Example: `Press [F9]'
Part I, How to Get Started page 12
C O M S O F T VMiX 286
The Only Keys
You Need to Know:
<RETURN> VMiX is designed to interpret
the <RETURN> key pressed by
itself, alone in a line, as
a request for help. The<RETURN>
key is labled 'Enter<--' on
IBM keyboards.
<Esc> When using BASIC or BASICA
interpreters, this key will
clear BASIC's line editor
buffer. This key will
prevent Syntax Errors, which
sometimes occur during new
commands typed, when using
BASIC from a terminal port.
When using the root commands
exec or dosjob, this key
will abort a wait for a busy
DOS.
The debugger shell uses<Esc>
with some looping commands,
to exit or end a loop.
<Ctrl> <Break> Pressing these two keyboard
keys simultaneously, will
abort an operation.
<Ctrl> <C> Pressing these two keyboard
keys simultaneously, will
abort an operation.
Part I, How to Get Started page 13
C O M S O F T VMiX 286
<Ctrl> <F> Pressing these two keyboard
keys simultaneously, will
toggle the function key
emulation from a terminal.
Keyboard digits <1>, <2>,
<3>... <0>, will perform
like [F1], [F2]... [F10].
Holding down the <Shift> key
while pressing a keyboard
character key will cause an
Alt-key sequence to be sent
to the host. The terminal
will beep when the function
keys are turned-on.
<Shift> <Tab> Pressing these two keyboard
keys simultaneously, will
toggle the currently active
console task that owns the
keyboard. The keyboard is
re-assigned, in round-robin
fashion, among the channels
currently assigned to the
console. The VMiX console
status-line displays the
channel/task that owns the
keyboard. <Shift><Tab> does
not affect multitasking.
<&> When the character '&' is
placed in a VMiX command
line, a background process
will be started to execute
everything in the line, up
to the '&' character. This
method of starting a job
should be used only for non-
interactive processes.
Part I, How to Get Started page 14
C O M S O F T VMiX 286
COMMANDS OVERVIEW
SHELL COMMANDS
When the VMiX start-up screen
displays the initial command prompt
'A>______', press the <RETURN> key to view
the available commands (or tokens) for
the root shell level.
The screen will display: (Fig. 1)
----------------------------------------------------------
| VMiX.286 1.4X Copyright (C) ComSoft 1987 |
|----------------------------------------------------------|
| [PROCESSOR = 80286] |
| A>_<RETURN>___________ |
| |
| --------------------------------- |
| | VMiX 286 ROOT SHELL | |
| | debug rshell remote swap | |
| | chprio exec dosjob spawn | |
| | kill quit | |
| --------------------------------- |
| |
| A>____________________ |
| |
----------------------------------------------------------
(Fig. 1)
See Chapter 2, 'The Root Shell', for
a detailed description of each command.
Part I, Commands Overview page 15
C O M S O F T VMiX 286
The term root refers to the first
level in a nesting of layered levels.
It is used primarily to refer to
processes that invoke other child
processes. The root process is the
grandfather of all subsequent children.
When VMiX starts, the root process is
created and displays at the console of
the processor running it. The root
process has the highest privilege on the
system. Only root can terminate (quit)
VMiX.
The term shell refers to a grouping
of commands and capabilities that is
provided by a command language
interpreter. MSDOS has a single shell
called command.com. This is the shell
that interacts with MSDOS users when
they type diskcopy or dir, etc. VMiX
can have a large number of shells, each
called from the previous or father
shell. Here again, the top command
shell is called the root shell, even
though it is the top shell for all
processes besides the root process.
If you type debug and press <RETURN>,
you will invoke the debugger shell.
The VMiX prompt will change to
'- _______', press the<RETURN> key to view
the available commands (or tokens) for
the debugger shell level (Fig. 2).
Part I, Commands Overview page 16
C O M S O F T VMiX 286
----------------------------------------------------------
| VMiX.286 1.4X Copyright (C) ComSoft 1987 |
|----------------------------------------------------------|
| A>_debug<RETURN>______ |
| - _<RETURN>___________ |
| |
| ---------------------------- |
| | VMiX KERNEL LEVEL DEBUGGER | |
| | read init assign | |
| | write examine deassign | |
| | set quit | |
| ---------------------------- |
| |
| - ____________________ |
| |
----------------------------------------------------------
(Fig. 2)
See Chapter 3, 'The Debugger Shell',
for a detailed description of each
command.
Part I, Commands Overview page 17
C O M S O F T VMiX 286
COMMAND SUMMARY
All the available shell commands or
tokens are summarized in Figure 3,
below. VMiX has 2 shells levels that
correspond to 3 layers of token nesting.
Shell level 0 is the top or root layer
of tokens. The debugger shell is the
next shell level, it contains 2 layers
of tokens or commands.
The basic rule of token parsing by
the VMiX command interpreter is that to
reach a token at a higher layer you must
invoke the token(s) at the lower layers
of the shell level you are at.
For example, to execute the token
read from the root shell level, you
should type debug read, but from the
debugger shell level (you are already at
layer 1) you need only type read.
If a token has no action associated
with itself, but instead is a path to
several sub-tokens at the next higher
layer, then typing just that token will
display, on the screen, the choices
available for the sub-tokens to complete
the command.
For example, if you type the token
set from inside the debugger shell,
the sub-tokens (next layer) belonging to
'set' will be displayed (ie., 'video',
'remote', 'baud', 'debug', ...). Then,
if you type set video, since there are
no deeper tokens, the switches belonging
to 'set video' will be displayed.
Part I, Commands Overview page 18
C O M S O F T VMiX 286
Finally, you type set video -m to set
the video mode and VMiX will prompt you
with a menu of available video mode
settings. You select video mode '6' for
640 x 200 BW graphics.
The paragraph above describes the
learning curve for VMiX. Had you already
been familiar with the debugger shell,
you would have typed the single command
line: set video -m6.
Part I, Commands Overview page 19
C O M S O F T VMiX 286
|ROOT |DEBUG |
|LEVEL..|LEVEL....................................|
| 0 | 1 | 2 |
---------------------------------------------------
|debug |
| |read |
| |write |
| |set |
| |baud |
| -c " sets communications: chan|
| baud, parity, word, stop"|
| |dos |
| -m " toggles DOS shell |
| emulation mode ON/OFF" |
| -n " sets DOS INT21 function |
| maximum nesting level" |
| -p " sets DOS current process |
| PSP: nuPSP(seg)" |
| |font |
| -t " sets font type: (0 - 3)" |
| |pool |
| -a " adjusts transient |
| program memory: |
| MCB(seg), nusize(para)" |
| -m " sets transient program |
| partition size: |
| (0 - 1024K)" |
| -o " sets transient program |
| memory owner: |
| MCB(seg), nuPSP(seg)" |
---------------------------------------------------
(Fig. 3)
Part I, Commands Overview page 20
C O M S O F T VMiX 286
|ROOT |DEBUG |
|LEVEL..|LEVEL....................................|
| 0 | 1 | 2 |
---------------------------------------------------
| |process |
| -b " sets process shell buffer|
| size: (0 - 127)" |
| -e " toggles system evironment|
| protection ON/OFF" |
| -h " toggles process hardware |
| priviledge ON/OFF" |
| -p " sets process priority: |
| (0 - 31)" |
| |remote |
| -c " sets remote channel" |
| -l " sets polled terminal |
| login channel" |
| |system |
| -m " toggles manager message |
| displays ON/OFF" |
| -s " toggles scheduler swapped|
| processing ON/OFF" |
| -t " toggles scheduler clock |
| processing ON/OFF" |
| -w " sets shutdown wait delay:|
| seconds" |
| |terminal |
| -t " sets terminal type: |
| (0 - 9)" |
---------------------------------------------------
(Fig. 3 continued)
Part I, Commands Overview page 21
C O M S O F T VMiX 286
|ROOT |DEBUG |
|LEVEL..|LEVEL....................................|
| 0 | 1 | 2 |
---------------------------------------------------
| |video |
| -c " sets video background/ |
| foreground colors" |
| -C " sets window color attrib"|
| -m " sets video mode:(0 - 16)"|
| -s " toggles status line |
| display ON/OFF" |
| -w " sets root window size: |
| y0, x0, y1, x1" |
| -W " auto partitions (1 - 4) |
| task windows |
| (Shift-Tab toggles kbd)" |
| |init |
| |comm |
| -c " sets communications: chan|
| baud, parity, word, stop"|
| |examine |
| |memory |
| |mcb |
| |kernel |
| |assign |
| |gdt |
| |deassign |
| |gdt |
| |memory |
| |quit |
---------------------------------------------------
(Fig. 3 continued)
Part I, Commands Overview page 22
C O M S O F T VMiX 286
|ROOT |DEBUG |
|LEVEL..|LEVEL....................................|
| 0 | 1 | 2 |
---------------------------------------------------
|rshell |
|remote |
| -c " sets remote channel" |
| -l " sets polled terminal login channel" |
|swap |
| |'process id' |
|chprio |
| |'process id and new priority level' |
|exec |
| -a " adjusts transient program memory: |
| MCB(seg), nusize(para)" |
| -m " sets transient program memory partition |
| size: (0 - 1024K)" |
| -o " sets transient program memory owner: |
| MCB(seg), nuPSP(seg)" |
| |path |
| " utility displays/sets program |
| file search path" |
| |dpath[.exe] |
| " utility displays/sets data file |
| search path" |
| -v " sets verbose mode" |
| -q " sets quiet mode" |
| -r " allows data read only" |
| -w " allows data read/write" |
| -h " help" |
| |dstat[.exe] |
| " utility displays all objects" |
| -a " selects only assigned objects" |
| -r " selects only free objects" |
---------------------------------------------------
(Fig. 3 continued)
Part I, Commands Overview page 23
C O M S O F T VMiX 286
|ROOT |DEBUG |
|LEVEL..|LEVEL....................................|
| 0 | 1 | 2 |
---------------------------------------------------
| |monitor[.exe] |
| " utility monitors process/system" |
| -p " monitors VMiX memory pool" |
| -r " monitors process registers: |
| process id" |
| |'process id' |
| |ps[.exe] |
| " utility displays all processes" |
| |'MSDOS command...' |
|dosjob |
| [-W] " gives process the full screen" |
| |'MSDOS command or /VMiX command...' |
|spawn |
| -c " sets I/O channel for STDIO and gets |
| command line script" |
|kill |
| |'process id' |
|quit |
---------------------------------------------------
(Fig. 3 continued)
[ ] indicates optional
Part I, Commands Overview page 24
C O M S O F T VMiX 286
Part I, Commands Overview page 25
PART TWO
VMiX 286
CHAPTER 1
USING VMIX 286
Part II, Using VMiX 286 page 1-1
Part II, Using VMiX 286 page 1-2
C O M S O F T VMiX 286
VMiX START-UP
VMiX presently has no installation
options, but can be pre-initialized to
your desired state by including commands
with its invocation. The section titled
'Using the Command Line' describes how
to include VMiX commands in a start-up
batch file, for completely automatic
execution.
VMiX is easy to install. Simply
copy the executable files in the VMiX
archive to your directory and execute
the boot module VM_BOOT.EXE.
If you can execute your appli-
cations from MSDOS, they are already
installed for VMiX. VMiX does not use
PIF or other types of application
configuration files. Applications that
write directly to the screen will
usually coexist with other applications
at the console, but will not display
properly at a COMM port terminal or PC.
Part II, VMiX Start-Up page 1-3
C O M S O F T VMiX 286
INTERFACE TO MSDOS
exec Starting
a Program
VMiX provides access to the MSDOS
command shell with the root command
exec. The command syntax is:
exec [ MSDOS command ]
Two or more VMiX processes can use
the exec command to access MSDOS,
provided that:
a) All transient program memory has not
been previously allocated (.COM programs
will do this, as well as .EXE program
which have not been modified with exemod
an MSDOS utility program). The -m switch
can be used with exec to control the
amount of memory that .COM or .EXE
programs can grab.
b) MSDOS is not busy with a nested
function call beyond the initial exec
call from VMiX. If another VMiX process
has also invoked MSDOS services that
have not completed, then VMiX will wait
for MSDOS to say that it can handle
another request. The user waiting for
MSDOS access can determine the process
currently using (and not releasing)
MSDOS by examining the VMiX parameter
'doslevel' from the VMiX debugger with
the utility monitor.exe.
Part II, VMiX Start-Up page 1-4
C O M S O F T VMiX 286
exec Controlling
Memory Use
To control memory use within the
640K that VMiX utilizes, exec provides
the -m option. When exec -m???? has been
specified, all programs will be limited
to partitions equal or smaller than the
size (in kilobytes), specified with the
command. The command syntax is:
exec -m [ max. K bytes ]
The recommended start-up partition
size is 256 kilobytes: exec -m256
The use of exec as a prefix to DOS
commands becomes optional if the user
has enabled DOS shell emulation from
within the VMiX debugger. MSDOS shell
emulation is toggled by the command:
debug set dos -m
The exec command is described further in
Chapter 2,'The Root Shell'.
Part II, VMiX Start-Up page 1-5
C O M S O F T VMiX 286
dosjob Starting
a Program
in a Window
VMiX provides a second command for
windowed access to the MSDOS command
shell. The command syntax is:
dosjob [-W][ MSDOS command ]
Up to four VMiX processes can use
the dosjob command to access MSDOS.
To use 'dosjob' to run a program
that requires access to the full screen,
use the '-W' option:
(ie., 'dosjob -W [drive:][PATH]filename')
dosjob can also be used to execute
VMiX shell command(s) in a separate
console window, VMiX shell commands
given to a 'dosjob' must be preceded
with a '/' (ie., 'dosjob /debug' or
'dosjob /rshell'). The '/' must not be
used, if the command is for MSDOS, for
example 'do gwbasic' or 'do dir'.
NOTICE, that after a 'dosjob' command
the keyboard moves to the new process.
Part II, VMiX Start-Up page 1-6
C O M S O F T VMiX 286
VMiX CONFIGURATION
CONFIGURATION:
SYS_MAXPROC 8 total number of processes
SYS_MAXOBJ 27 total number of objects
SYS_MAXTYP 10 total number of object types
SYS_NTTY 5 total number of terminals
SYS_NPRN 2 total number of printers
SYS_NVOM 10 total number of managers
SYS_MAXTDB 10 total num. of terminal types
SYS_MAXFUN 10 total number of driver funcs
SYS_MAXCHAN 16 total number of channels
SYS_NPSTATE 18 total num. of queued pstates
SYS_NOSTATE 2 total num. of queued ostates
SYS_INITPRI 7 new process initial priority
SYS_EXEPRI 2 lowest priority adjust
SYS_MAXPRI 31 system highest priority
SYS_TABLEN 10 max. entries in shell table
SYS_MAXTOK 10 total number of token tables
SYS_MAXARG 10 total number of arg tables
SYS_SHLBUF 128 shell command buffer size
SYS_INITSTK 2048 new proc default stack size
SYS_MINSTK 512 process minimum stack size
SYS_NULLSTK 512 NULL process stack size
SYS_PAGE 512 memory page size bytes
SYS_EPAGE 65536 extended page size bytes
SYS_PRVSTKS 4 num. of priviledge stacks
SYS_MAXGDT 32 total num of gdt descriptors
SYS_MAXLDT 32 total num of ldt descriptors
SYS_PNMLEN 8 process name maximum length
SYS_SLICE 0 clock tick scheduler step
SYS_QUANTUM 0 preempt base count
NULLPID 0 NULL process id
NULLUID 0 NULL object id
Part II, VMiX Start-Up page 1-7
C O M S O F T VMiX 286
USING THE COMMAND LINE
VM_BOOT [-r][ [ command ] /... ]
VMiX presently has no initialization
options, but will accept a command line
of up to 127 characters long. Multiple
commands can be entered, separated by a
valid VMiX delimiter '/' ',' tab or
space.
Since all root and debugger shell
commands can be executed from the
command line, the user has a wide range
of control over the state VMiX begins in.
You will learn the shell commands in
Chapters 2 and 3. For now, the examples
below illustrate some useful ways to
invoke VMiX, other than the standard
VM_BOOT, typed with no commands.
EXAMPLES:
VM_BOOT set video -m6/set system -m/
set system -t/set video -s<RETURN>
(This could also be typed as shown below,
since the shell only needs a minimum of
two characters to recognize a token.)
VM_BOOT se vi -m6/se sys -m/
se sys -t/se vi -s<RETURN>
The above command lines, invoke VMiX
from MSDOS A> prompt. The video mode of
the root console is set to 6 (640 x 200
Part II, Using the Command Line page 1-8
C O M S O F T VMiX 286
BW graphics mode); the debugger object
manager messages are toggled ON; logins
and multitasking are disabled, and the
root console's status line is toggled ON.
VM_BOOT set remote -l2/set term -t4
set baud -c2 300,n,8,1<RETURN>
The above command line, invokes VMiX
from MSDOS A> prompt. Sets VMiX to poll
COM2: for logins and selects the
terminal type to be (4)VT-100. The VMiX
default terminal type is 9, backspacing
teletype. The communication parameters
for VMiX channel 2, which coincides with
COM2:, are reset to 300 baud with no
parity checking.
NOTE: Normally, VMiX polls only COM1:
for logins. The default baud rate is
9600 with no parity. Once started,
processes can run on any serial port
simultaneously. However, presently only
one port at a time is monitored,
awaiting for some user to press an
attention getting <RETURN>. If COM1: has
been assigned to a printer or other
device, use the above command line to
set your second user terminal to use
COM2:!!!
COMMON TERMINALS:
-t0 = TELEVIDEO 910/920
-t1 = ADM3A
-t2 = VT-52
-t3 = ZENITH H19
-t4 = VT-100
-t9 = tty
Part II, Using the Command Line page 1-9
C O M S O F T VMiX 286
VM_BOOT set vi -m3/exec b:basic<RETURN>
The above command line, invokes VMiX
from MSDOS A> prompt. The video mode of
the root console is set to 3 (80 x 25
alphanumeric with color, required by
BASIC for start-up); invokes the foreign
dos exec command, (MSDOS, in this case)
to run the BASIC interpreter in drive b:.
NOTE: Since the command line was typed
from MSDOS A> prompt, A: is the default
drive. VMiX exec command expects an
MSDOS command.com file present in the
boot drive!!! BASIC expects the initial
screen video mode to be 3, alphanumeric.
The same is true of Microsoft WINDOWS.
VM_BOOT set font -t1/set proc -b64/
set video -m6<RETURN>
The above command line, invokes VMiX
from MSDOS A> prompt. Sets VMiX to use
compressed characters (font type 1),
requests that the shell command line be
up to 64 characters long, and resets the
video to 640 x 200 CGA graphics mode.
VM_BOOT set vi -m3/assign srcsink 0/
spawn -c5 set vi -W/exec basic<RETURN>
The above command line, invokes VMiX
from MSDOS A> prompt. The video mode of
the root console is set to 3, a new
channel to the console is obtained; and
a task is spawned to the new channel,
the screen is windowed, and BASIC is
executed. The same results can be
Part II, Using the Command Line page 1-10
C O M S O F T VMiX 286
obtained with the command line shown
below:
VM_BOOT dosjob basic<RETURN>
This illustrates the power of the dosjob
command or 'do', for short. Note VMiX's
default video mode is 3, alphanumeric
text.
Part II,Using the Command Line page 1-11
C O M S O F T VMiX 286
SYSTEM CONSOLE DISPLAY
The VMiX operator console, is the
host PC video display and keyboard.
This user has root priviledges.
If the system has a color graphics
adapter, the default console mode is
80 x 25 alphanumeric text. If there is
a monochrome adapter (MDA), the default
and only mode allowed is monochrome. For
EGA of VGA video adapters the default
starting mode is the same as for CGA,
however additional graphics modes are
supported with these adapters (use:
debug set video -m to select other
modes).
Multiple console processes are
supported by the debugger set video -W
command, which automatically partitions
screen windows for the background tasks;
and by the hot key, Shift-Tab, which
moves the keyboard to any of the windows.
The set video -W command is fully
automatic. It should be used after a
new channel has been assigned to the
console, COMM = 0. The upper case '-W'
command, as opposed to the manual window
select '-w', uses the tally of COM0
channels to chose the number and size of
the windows needed. This command can be
used within a spawn command or previous
to it. All tasks running in the windows
will execute concurrently in the
background, regardless of which one owns
the console keyboard.
Part II,Using the Command Line page 1-12
C O M S O F T VMiX 286
The root shell provides two commands
that request services (from MSDOS). The
first, 'exec', has as its argument any
valid MSDOS command, which is then
executed by the current process. The
second is a multitasking version of
'exec'. The command 'dosjob' takes the
same arguments as 'exec', but the MSDOS
command is executed in the background by
a new process, in a separate window. The
hot key, <Shift><Tab>, can be used to
switch the keyboard to the right window.
Part II,Using the Command Line page 1-13
C O M S O F T VMiX 286
SHELL COMMANDS
When the VMiX start-up screen
displays the initial command prompt
'A> ______', press the <RETURN> key to see
the available commands (or tokens) for
the root shell level (Fig. 1).
The full name of the token need not
be entered in a command, the shell will
recognize the command by the first two
characters, if only two were entered
(otherwise, it tries to match as many
characters as were entered).
VMiX has presently two shell
levels, the root shell and the debugger
shell, each with its own group of legal
commands (tokens). The shells are
driven by token tables. Any token can,
in-turn, point to its own secondary
token table. For example set is a valid
debugger shell token, that owns a table
of its own. The 'set' token table
contains the sub-tokens (video, remote,
baud, system, dos, font, terminal,
process and pool). Therefore, you can
enter a command like set video<RETURN> or
set baud <RETURN>.
Now, 'set video' does not say much
by itself, except that you wish to set
the video display to some state. Token
arguments or switches complete the
command. The token video, abbreviated
vi, has a list of arguments that it will
accept. All arguments are preceded by
the switch character '-', (ie., -s, -m,
-m6).
Part II, Using VMiX 286 page 1-14
C O M S O F T VMiX 286
The shell will help you, if you
forget what are the valid secondary
tokens and arguments. Just type as much
as you know, and VMiX will display the
available choices. For example, from the
debugger shell, type set and press
<RETURN>. A list of secondary tokens and
arguments will follow.
If an argument can take values, you
have the option of entering the value(s)
after the argument switch, or the VMiX
shell will, in most cases, prompt for
the values omitted.
To enter a command belonging to an
alternate shell, while still inside the
current shell level, simply precede the
command with the alternate shell name.
For example, from the root shell (the
prompt is 'A> __________') to enter a
debugger command precede the command
with debug. (ie., deb set vi -m3).
Note: You do not return to the starting
shell, but to the one invoked with the
command. VMiX Version 1.4X will allow,
in most cases, for a debugger command to
be typed from the root shell without the
debug prefix.
Part II, Using VMiX 286 page 1-15
C O M S O F T VMiX 286
LOGIN TERMINALS
VMiX supports users on COM1, COM2,
COM3, and COM4 serial ports on an IBM PC
or compatible. The default baud rate
is 9600. Presently, VMiX does not synch
on the baud rate. The baud rate for
COMM channels can be changed from the
debugger shell or the MSDOS command line
by using:
set baud -c????,baud,parity,word,stop
It is strictly by convention that
COM1, COM2, COM3, and COM4 are assigned
VMiX object channels 1, 2, 3, and 4,
respectively. These ports can be
assigned other channels from the
debugger, simultaneously or exclusively.
Initially, only one serial port is
scanned for logins. The default port is
COM1:, but this can be changed by the
command set remote -l2<RETURN>, entered
from the debugger shell or from the
MSDOS command line. Technically, VMiX
will support more than COM1: to COM4:,
but the user needs to configure channels
to other ports from the debugger, with
assign and set baud.
From the login terminal, press<RETURN>
to receive the VMiX login: prompt.
Passwords are disabled in Release 1.3X,
so any 8 character user name that you
enter is acceptable for the login.
Terminal emulation is by default, no
emulation. To set the terminal type use
debug set terminal -t<RETURN>.
Part II, Using VMiX 286 page 1-16
C O M S O F T VMiX 286
TERMINAL TYPES
Normally, a terminal or a PC will
be connected to the host's COM1: or
COM2: ports, to serve as a user
workstation. In both cases, you need to
tell VMiX what terminal type to expect.
The VMiX command for this is set term
-t????, where:
-t0 = TELEVIDEO 910/920
-t1 = ADM3A
-t2 = VT-52
-t3 = ZENITH H19
-t4 = VT-100
-t9 = tty
If a PC is used as a terminal, it
must be executing a communications
program with terminal emulation.
Usually, VT-100 terminal emulation will
be an adequate choice.
VMiX supports windows with VT-100
emulation, however, non-conflicting
scrolling only works with windows whose
width is equal to the display (80 cols.)
The debugger auto windowing command
'set video -W' should only be used at a
VT-100 terminal, when no more than 2
STDIO channels are assigned to it. The
same applies to the root shell command
'dosjob', when used from a terminal.
Part II, Using VMiX 286 page 1-17
C O M S O F T VMiX 286
IBM FUNCTION KEYS
Pressing <Ctrl><F> from a terminal,
will toggle-in IBM PC function key
emulation (emulated by the digit keys)
and also provide the [Ins], [Del], and
[End] keys, invoked by pressing ^I,
^D, or ^E. The <Alt> key will become
the terminal's <Shift> key.
The first time <Ctrl><F> is pressed
the terminal will beep and the function
key substitutes will become active; the
second time ^F is pressed, there will
be two beeps and the terminal keys will
return to normal operation.
In function key emulation mode, the
arrow keys will produce the same codes
that an IBM PC keyboard produces, and
the terminal's [Home] key will behave as
in a PC keyboard. The IBM PC's <Ctrl>
[NumLock] function is provided by press-
ing <Ctrl><S>, instead.
Part II, Using VMiX 286 page 1-18
C O M S O F T VMiX 286
^F (1 beep)
for press
IBM PC KEY TERMINAL KEY
[F1] 1
[F2] 2
[F3] 3
[F4] 4
[F5] 5
[F6] 6
[F7] 7
[F8] 8
[F9] 9
[F10] 10
<Ctrl>[Break] ^C
<Ctrl>[NumLock] ^S
[Ins] ^I
[Del] ^D
[End] ^E
[Home] [Home]
<Alt> <Shift>
NOTE: The <Ctrl> key symbol has been
abbreviated as ^.
Part II, Using VMiX 286 page 1-19
C O M S O F T VMiX 286
COMMUNICATIONS
VMiX supports users on COM1, COM2,
COM3, and COM4 serial ports on an IBM PC
or compatible. The term 'users' implies
the ability to logon to those ports. The
use of COM ports by VMiX for user logons
can conflict with other users attempting
to execute a communications program that
also wants to use the same COM port for
serial communications.
The conflict arises when VMiX polls
the port to check for initial logon
activity. VMiX is designed to poll only
one assigned COM port at any given time.
The assigned port is user configurable
by using the command set remote -l ????.
The default VMiX assigned polled
port is COM1. This should be changed to
a non-conflicting port, before executing
a program that will use COM1 for any
activity. The command to set an alter-
nate polled port is: .
set remote -l1 (for COM1 logins)
set remote -l2 (for COM2 logins)
set remote -l3 (for COM3 logins)
set remote -l4 (for COM4 logins)
Part II, Using VMiX 286 page 1-20
C O M S O F T VMiX 286
EXTENDED MEMORY
VMiX 286 executes all tasks in low
memory (an area of physical memory also
known as conventional memory). VMiX can
use 80286 extended memory to swap tasks
out of conventional memory to make room
in low memory for other tasks. The root
shell command swap controls the migra-
tion of tasks between conventional and
extended memories.
If a process is in low memory, it
will be swapped to extended 80286 memory.
If the process is already swapped, then
it will be moved back to low memory and
resume execution.
Swapped processes will not normally
execute, and will stay suspended until
they are swapped again to low memory.
To allow swapped tasks to also execute,
(less frequently than in-memory tasks)
use the debugger command set system -s.
VMiX swapping can conflict with
other processes using extended memory.
However, you can reserve extended memory
for other uses, like caches, TSR's, etc.
so that VMiX swapping will not interfere.
Use the 'assign memory' command, before
any swapping, to assign extended memory
above 1 MegByte (conventional memory).
The command syntax is:
assign MEMORY [ size in bytes ]
Part II, Using VMiX 286 page 1-21
C O M S O F T VMiX 286
Part II, Using VMiX 286 page 1-22
PART TWO
VMiX 286
CHAPTER 2
THE ROOT SHELL
Part II, The Root Shell page 2-1
Part II, The Root Shell page 2-2
C O M S O F T VMiX 286
NAME: debug
OUTLINE:
Purpose: To invoke the VMiX debugger shell.
DESCRIPTION::
debug is a root shell token. This
command has 8 sub-tokens:
read, write, set, init, examine,
assign, deassign, and quit.
'debug', by itself, invokes the VMiX
debugger shell. The debugger shell
prompt is '- __________'. Once in the
debugger shell, all the debug sub-tokens
become first level tokens and you do not
have to preceed them with the token
'debug' (refer to Chapter 3 for use).
VMiX accepts numeric input in two
forms, decimal or hexadecimal. To enter
hexadecimal numbers preceede the number
with the characters '0x'.
To return to the root shell, from
the debugger use the token 'quit'.
NOTE: All eight debugger sub-tokens can
be used from the root shell level,
whether you precede them with the token
'debug', or not. If used with the
prefix 'debug', you will move to the
debugger shell when the current command
completes. Without the prefix, you will
remain at the root shell.
Part II, The Root Shell page 2-3
C O M S O F T VMiX 286
NAME: rshell
OUTLINE:
Purpose: To start a new shell.
DESCRIPTION:
Part II, The Root Shell page 2-4
C O M S O F T VMiX 286
NAME: remote
OUTLINE:
-c " selects remote channel"
Purpose: To control your PC remotely
via a modem or terminal connection.
DESCRIPTION:
The root shell command 'remote'
terminates VMiX, but first sets STDIO to
use the channel specified after the -c
switch. Therefore, MSDOS resumes at the
device associated with the channel.
VMiX Release 1.4X, does not fully
implement I/O redirection, particularly
to files. So this token is only useful
to terminate to MSDOS level, when the
channel requested is assigned to a COMM
object (serial port) connected to a
terminal or modem (NOTE: in VMiX terms,
a COMM object is called a 'SRCSINK', a
device that is a source as well as a
destination for characters).
VMiX provides two REMOTE commands.
The single word command remote is only
available from the root shell. The
debugger shell has a different command,
set remote (refer to Chapter 3). The
two commands behave differently.
Part II, The Root Shell page 2-5
C O M S O F T VMiX 286
From the root shell typing,
remote -c1 (for COM1 remote)
remote -c2 (for COM2 remote)
remote -c3 (for COM3 remote)
remote -c4 (for COM4 remote)
Will:
a) shutdown VMiX and logoff Root,
b) return to DOS,
c) set DOS's STDIO to COM1, COM2, COM3,
or COM4 when DOS takes over.
This will allow you to run your PC from
a terminal or via a modem. Note, you
should select a terminal type (using set
terminal) appropiate for the equipment
connected to your computer's COMM ports.
A popular terminal type supported by
VMiX is VT-100 emulation, since many
PC communication programs provide this
type of emulation.
The commands required to do this are:
debug (go to debugger)
set terminal -t (a valid terminal
type number can be
optionally entered
preceded by -t)
In the example above, VMiX will display
a menu of terminals available. In the
example below, VMiX will set the
terminal type to 4 (VT-100).
set terminal -t4 (choose VT-100)
Part II, The Root Shell page 2-6
C O M S O F T VMiX 286
All this can be put in a .BAT file, to
be used when running VMiX for this
purpose. If the terminal type is to be
a VT-100 and the serial port in use will
be COM1, then the single line in a .BAT
file would read:
vm_boot set terminal -t2 / remote -c1
While in REMOTE mode, FUNCTION KEY
emulation is toggled by pressing the
<Ctrl> and <F> keys from the terminal's
keyboard. Note that the digit (numbers)
keys on the terminal's keyboard will now
work as [F0] through [F9] keys. The
[Ins], [Del], and [End] keys can now be
invoked from the terminal by pressing
^I, ^D, and ^E respectively. The
terminal's arrow keys and [Home] key
will simulate these keys on the IBM PC
keyboard and the terminal's <Shift> key
will simulate the IBM PC's <Alt> key.
Press ^F a second time to return to
numeric keys.
Returning control to the CONSOLE is
accomplished by pressing <Ctrl> <Z> from
the terminal, while in the FUNCTION KEY
mode.
Part II, The Root Shell page 2-7
C O M S O F T VMiX 286
NAME: swap
OUTLINE:
Purpose: To swap a task.
DESCRIPTION:
The command syntax is:
swap [ process id ]
If a process is in low memory, it
will be swapped to extended 80286 memory.
If the process is already swapped, then
it will be moved back to low memory and
resume execution.
Swapped processes will not normally
execute, and will stay suspended until
they are swapped again to low memory.
To allow swapped tasks to also execute,
(less frequently than in-memory tasks)
use the debugger command set system -s.
Part II, The Root Shell page 2-8
C O M S O F T VMiX 286
NAME: chprio
OUTLINE:
Purpose: To change the executing
priority of a VMiX process.
DESCRIPTION:
All VMiX processes start with the
default priority of 7. Priorities adjust
constantly in VMiX, within the range 2
through the assigned base maximum for
the process. When you use chprio, you
merely set the base maximum that the
current priority of a process is allowed
to float within. VMiX uses this float
range, for example, to 'up' the priority
of a process, when the keyboard is used.
Task switching, also adjusts the current
priority. A process with a base priority
of 14 will execute twice as fast as
another at priority 7, all other things
being equal. A process with priority 1
will not execute at all. It will sleep
until you 'up' the priority above 1.
VMiX priorities range from a high
of 31 to a low of 0. The scheduler
always chooses the process with the
highest priority. The scheduler round
robin's processes with the same priority.
At the expiration of the quantum
for a process, when the current process
is preempted and the next READY process
is activated, the previous process'
Part II, The Root Shell page 2-9
C O M S O F T VMiX 286
priority is reduced. On the other hand,
the current priority of any process is
increased when I/O for that process is
received. The current priority of any
process never increases above its base
priority, nor drops below SYS_EXEPRI.
The configuration value for SYS_EXEPRI
is 2.
If the priority of a process is
reduced below SYS_EXEPRI, it remains in
the READY to execute state until all
processes with normal priorities have
terminated or become non-READY.
The token 'chprio' is used to
change the base and current priority of
any process to the new value requested.
The command syntax is:
chprio [ pid [ / priority ] ]
where, pid is the process id of the
target process, and priority is a
priority value between 0 - 31. If only
chprio is entered, then the shell will
prompt for the two arguments. The
default pid, if you only press <RETURN>,
is the current process id. The default
priority is the base priority of the
target process.
Part II, The Root Shell page 2-10
C O M S O F T VMiX 286
NAME: exec
OUTLINE:
-a " adjusts transient program memory
size: MCB(seg), nusize(para)"
-m " sets transient program memory
partition size: (0 - 1024K)"
-o " sets transient program memory
owner: MCB(seg), nuPSP(seg)"
Purpose: To execute a valid MSDOS file
or command.
DESCRIPTION:
exec is a limited utility interface
to MSDOS. The 'exec' token can be used
(with no switches) to execute any MSDOS
command string from within a VMiX root
shell. The main purpose of exec is to
execute an MSDOS file. It can be
invoked by itself or in conjunction with
the spawn token.
The command syntax is:
exec [ MSDOS command ]
The utility of exec for invoking
executable images from within a VMiX
process is limited because exec uses the
MSDOS command.com loader. The MSDOS
loader makes assumptions about memory
allocation, which do not conform to a
multiuser environment like VMiX.
Part II, The Root Shell page 2-11
C O M S O F T VMiX 286
The use of exec as a prefix to DOS
commands becomes optional if the user
has enabled DOS shell emulation from
within the VMiX debugger. MSDOS shell
emulation is toggled by the command:
debug set dos -m
Two or more VMiX processes can use
the exec command to access MSDOS
provided that:
a) All transient program memory has not
been previously allocated (.COM programs
will do this, as well as .EXE program
which have not been modified with exemod,
an MSDOS utility program). The -m switch
can be used with exec to control the
amount of memory that .COM or .EXE
programs can grab.
The command syntax is:
exec -m [ max. K bytes ]
where, the maximum number of K bytes
specified limits the amount of memory
that a program can allocate as its own.
For example, exec -m128<RETURN>, will
limit programs to a maximum of 128K
bytes.
Part II, The Root Shell page 2-12
C O M S O F T VMiX 286
b) MSDOS is not busy with a nested
function call beyond the initial exec
call from VMiX. If another VMiX process
has also invoked MSDOS services that
have not completed, then VMiX will wait
for MSDOS to say that it can handle
another request. The user waiting for
MSDOS access can determine the process
currently using (and not releasing)
MSDOS by examining the VMiX parameter
'doslevel' from the VMiX debugger with
the command examine process.
The -a switch is provided with the
'exec' command, to allow for the release
of memory previously allocated by MSDOS.
This can be a dangerous option. To help
in determining the arguments for this
switch, use the debugger shell's
examine token. The debugger shell will
list the MSDOS memory control blocks
with the command examine mcb. This
command will list the segment address
of each MCB and the size of each memory
block, in 16 byte paragraphs.
The command syntax is:
exec -a [ MCB address [ / nusize ] ]
where, the segment address of the MCB
has been obtained using the debugger
shell, and nusize is the new requested
size in paragraphs for the block. The
parameters can be entered in
hexadecimal, using the format 0x????
(example, exec -a 0x26F0 0xAF8).
Part II, The Root Shell page 2-13
C O M S O F T VMiX 286
The -o switch is provided with the
'exec' command, to allow for the change
of ownership of memory previously
allocated by MSDOS. Some programs (like
to allocate all available memory. This
is indicated by an 'end' MCB block that
has been assigned the PSP segment of the
program, as its owner.
Normally, the 'end' MCB holds
available memory and has a NULL PSP (0)
for its owner (use exam mcb from the
debugger shell to examine the memory
chain). You should next use the utility
monitor to determine that the program
has not allocated stack space in the
area covered by the 'end' MCB. After
this is verified, it will be safe to use
the -o switch and recover the 'end'
memory. To free the memory, set the PSP
owner to 0000. Sometimes, a better
solution is to deallocate some of the
memory with the -a switch, since the
process owner could be using some of the
'end' MCB memory.
The command syntax is:
exec -o [ MCB address [ / nuPSP ] ]
where, the segment address of the MCB
has been obtained using the debugger,
and nuPSP is the new PSP that will own
the memory block. The parameters can be
entered in hexadecimal, using the format
0x???? (example, exec -o 0x65F0 0).
Part II, The Root Shell page 2-14
C O M S O F T VMiX 286
NAME: dosjob
OUTLINE:
-W " gives process the full screen"
Purpose: To execute a valid MSDOS
command, and/or a series of VMiX shell
commands, within an automatic window.
DESCRIPTION:
dosjob spawns a child process that
executes a string of commands, input
immediately following, and on the same
line as the 'dosjob' token.
dosjob, like 'exec', provides an
interface to MSDOS. The 'dosjob' token
is used with no switches to execute any
MSDOS command string from within a new
VMiX multitasking process. The main
purpose of dosjob is to execute an MSDOS
file or command. It can also be invoked
in conjunction with VMiX shell commands.
For example, a dosjob, can include
another 'dosjob' command in its input
string.
The difference between 'dosjob' and
'exec', is twofold. dosjob will start a
new process to execute the job, while
exec will use the current process.
Second, dosjob, (without the -W option)
will open a new window for the process,
while exec will use the bounds of the
current shell process.
Part II, The Root Shell page 2-15
C O M S O F T VMiX 286
The command syntax is:
dosjob [-W] [ MSDOS command ]
[ / [ command ] /... ]
NOTE: 'dosjob' essentially performs a
new SRCSINK channel 'assign', followed
by a 'set video -W' and a 'spawn' of a
new child process, to execute the input
command string.
Part II, The Root Shell page 2-16
C O M S O F T VMiX 286
NAME: spawn
OUTLINE:
-c " sets spawn I/O channel and shell
script"
Purpose: To dispatch a background task
to be performed independently and con-
currently with everything else.
DESCRIPTION:
spawn creates a new child process,
owned by the invoking shell. The
channel specified immediately after the
-c switch becomes the STDIO channel for
the new process. After the channel
number, a script of VMiX shell commands
can be entered. Multiple commands are
input, separated by a valid VMiX
delimiter ('/' ',' tab or space).
The command syntax is:
spawn -c???? [ [ command ] /... ]
A way to implement EMAIL in your
system, is to have a user spawn an exec
job to somebody elses channel, where the
'exec' merely types a newly created text
message file:
spawn -c1 / exec type b:\news\myfile.txt
Part II, The Root Shell page 2-17
C O M S O F T VMiX 286
A more elegant way is to assign a
new channel to the device COM1 or COM2,
so that we can create a window without
disturbing the user too much. If a
window is created on the user's own
channel, then we have modified his envi-
ronment from our side; that is bad.
By using exec dstat -a, we can
determine the port # to talk with our
target user. In VMiX, ports refers to
physical devices, and channels are
logical circuits to those devices.
Assume we determined that he is using
COM1. From the debugger shell, we first
enable messages, to see what channel
number VMiX will allocate for our
'assign':
set system -m (enable manager msgs)
then we grab a channel,
assign srcsink 1 (the 1 requests
COM1, if you
prefer to be
prompted, just
type 'assign')
lets say that we were informed that
channel 3 was assigned, then:
quit (to exit the debugger)
now we 'spawn' to channel 3,
spawn -c3 / set video -w1 40 10 79 /
exec type b:\news\myfile.txt
Part II, The Root Shell page 2-18
C O M S O F T VMiX 286
This created a 10 x 40 window (via
channel 3) at the top right of his
display. The command set video -W can
also be used, in place of our manual
'set video -w....' in the example above.
A better EMAIL system could be written
using the VMiX System Services listed in
sysgate.asm, just like ps.c and dstat.c
were written.
Part II, The Root Shell page 2-19
C O M S O F T VMiX 286
NAME: kill
OUTLINE:
Purpose: To terminate the execution of
an image from a process other than the
owner. If the target process shell is
not executing an image, then the process
is terminated.
DESCRIPTION:
kill allows a hard terminate of a
process or image to be commanded from
another process. This command has two
levels of action. If the target process
shell is executing an image started by a
previous exec call, then that image is
terminated via an MSDOS INT 20h system
call. If no 'exec' image is being
executed then 'kill' will terminate the
target process.
The command syntax is:
kill [ process id ]
The utility ps.exe, executed with exec,
will list all active (pid's) process
id's.
SECURITY: The kill command will not let
a user terminate another user's process.
Only root or the su superuser has the
access priviledge to terminate all/any.
A regular user can only terminate his
own spawned processes.
Part II, The Root Shell page 2-20
C O M S O F T VMiX 286
NOTE: To be informed, on the screen, of
the pid assigned by a 'spawn', use the
debugger shell command set system -m to
enable object manager messages, before
the spawn of a new background job.
Part II, The Root Shell page 2-21
C O M S O F T VMiX 286
NAME: quit
OUTLINE:
Purpose: To terminate the shell and
exit.
DESCRIPTION:
quit decrements a process's shell
level (number of nested shells) by one
and returns to the previous shell, if
any. The root shell is VMiX's top shell,
so when terminated by a process without
root privilege, the process is ended.
Normally, the first process started at
the console has root privilege. If the
process has root privilege, then VMiX
is also terminated.
Part II, The Root Shell page 2-22
PART TWO
VMiX 286
CHAPTER 3
THE DEBUGGER SHELL
Part II, The Debugger Shell page 3-1
Part II, The Debugger Shell page 3-2
C O M S O F T VMiX 286
NAME: read
OUTLINE:
DESCRIPTION:
read is not implemented in VMiX
Release 1.4X; a dummy 'read' is performed
by this token.
Part II, The Debugger Shell page 3-3
C O M S O F T VMiX 286
NAME: write
OUTLINE:
DESCRIPTION:
write is not implemented in VMiX
Release 1.4X; a dummy 'write' is
performed by this token.
Part II, The Debugger Shell page 3-4
C O M S O F T VMiX 286
NAME: assign
OUTLINE:
assign allocates a VMiX channel to
an owner uid and assigns a VMiX object
to the channel.
assign allocates extended memory.
assign gdt allocates a VMiX 286
global descriptor table entry, returning
a new segment selector for either code
or data.
DESCRIPTION:
The command syntax is:
assign [ uid [ / objname ]
[ / objdata ] ]
where, uid is the identification of the
new owner for the channel. Note: if
the owner is going to be a process the
pid is equivalent to the uid of the
process.
Part II, The Debugger Shell page 3-5
C O M S O F T VMiX 286
The objname is one of:
Object type name definitions
PROCESS type proc is a process
SRCSINK type tty is a terminal
CHRSINK type prn is a printer
DSKFILE type df is a file
MEMORY type mf is a memory block
BLKSINK type dsk is a disk drive
MANAGER type sys is an obj manager
MAILBOX type mbox is a mailbox
DATLINK type dlc is a data link
The objdata, in the case of a SRCSINK
type object, is one of:
SRCSINK object id's
0 = The Root Console
1 = COM1:
2 = COM2:
3 = COM3:
4 = COM4:
If the object is a process',the objdata
is the pid of the target process. For
all other object types, except MEMORY,
the objdata is always the uid of the
target object for the channel. The
utility dstat.exe, executed with exec,
will list all VMiX objects.
Part II, The Debugger Shell page 3-6
C O M S O F T VMiX 286
The objdata, in the case of a MEMORY
type object, is the size, in bytes of
the object to assign. The size will be
rounded-up to the nearest 64k block.
Only extended memory can be allocated by
this command.
The extended memory pages can be listed
with the VMiX utility monitor.exe -p.
NOTE: To be informed, on the screen, of
the channel assigned by this command,
use the debugger command set system -m
to enable channel manager messages,
before the assign.
NOTE: When assigning a channel to a
SRCSINK that is going to be used for
logins, the uid identifing the new owner
of the channel must be set to 0, to
indicate the uid of the scheduler,
(example, assign 0 srcsink 1).
Part II, The Debugger Shell page 3-7
C O M S O F T VMiX 286
The command syntax is:
assign gdt [ access [ / size ]
[ / segment ] ]
where, access is usually entered as the
word 'code', if the segment is a code
segment or as the word 'data', if the
access byte of the gdt descriptor is to
be set to data segment access rights.
The user can also enter a decimal or
hexadecimal value, if he wishes to
override the default access rights value
that VMiX uses for its segments.
The parameters can be entered in
hexadecimal, using the format 0x????
(example, assign gdt 0x9B 10 0xF000
or assign gdt code 10 0xF000).
size is the size that the segment is to
have, specified as the number of pages.
A VMiX page is 512 bytes long.
segment is the segment address in
physical memory that the selector is to
translate to, when loaded onto a segment
register.
NOTE: To be informed, on the screen, of
the gdt selector assigned by this
command, use the debugger shell command
set system -m to enable memory manager
messages, before the assign gdt. The
manager always returns a far pointer, so
the selector is really only the first
word of the block address displayed by
the manager.
Part II, The Debugger Shell page 3-8
C O M S O F T VMiX 286
NAME: deassign
OUTLINE:
deassign deallocates a VMiX channel.
deassign gdt deallocates a VMiX gdt
selector.
deassign memory deallocates a VMiX
extended memory block.
DESCRIPTION:
The command syntax is:
deassign [ channel ]
where, channel specifies the channel
number to deassign. This can be a
dangerous command to execute, since
STDIO to the root console (channel 0)
could be deassigned, freezing the
console. If no other shell is running,
there is no way to assign the STDIO to
the root console again.
NOTE: To be informed, on the screen, of
the channel and IO Request Packets (IRP)
deassigned by this command, use the
debugger shell command set system -m to
enable channel manager messages, before
the deassign.
Part II, The Debugger Shell page 3-9
C O M S O F T VMiX 286
The command syntax is:
deassign gdt [ selector ]
where, selector is the gdt selector
returned by an assign gdt.
NOTE: To be informed, on the screen, of
the gdt selector deassigned by this
command, use the debugger shell command
set system -m to enable memory manager
messages, before the deassign gdt. The
manager always returns a far pointer, so
the selector is really only the first
word of the block address displayed by
the manager.
The command syntax is:
deassign memory [ page ]
where, page is the extended memory page
to return to the free memory pool. The
memory was previously assigned with the
assign command.
The extended memory pages can be listed
with the VMiX utility monitor.exe -p.
Part II, The Debugger Shell page 3-10
C O M S O F T VMiX 286
NAME: init
OUTLINE:
comm
-c " sets communications:
chan, baud, parity, word, stop"
DESCRIPTION:
(See set baud.)
Part II, The Debugger Shell page 3-11
C O M S O F T VMiX 286
NAME: examine
OUTLINE:
memory " displays memory graphically,
in 1K blocks"
mcb " displays information on the
MSDOS memory control blocks"
kernel " displays information on the
VMiX kernel"
DESCRIPTION:
examine memory
This command displays a map of the
first one megabyte of memory space. The
screen displays memory in blocks
representing 1024 (1K) bytes. If the
block is in use by the system, then it
is marked by a '$' or a solid black
block, in graphics mode. If the block
is in use by VMiX, then it is marked by
a 'V' or a gray shaded block. Memory
control blocks are distinguished by an
'=' or a small solid black block with
border, in graphics mode. Memory not in
use is indicated by an '.' or a small
solid white block with border.
Part II, The Debugger Shell page 3-12
C O M S O F T VMiX 286
NAME: set
OUTLINE:
baud
-c " sets communications:
chan, baud, parity, word, stop"
dos
-m " toggles DOS shell emulation mode
ON/OFF"
-n " sets DOS INT21 function maximum
nesting level"
-p " sets DOS current process PSP:
nuPSP(seg)"
font
-t " sets font type: (0 - 3)"
pool
-a " adjusts transient program memory:
MCB(seg), nusize(para)"
-m " sets transient program memory
partition size: (0 - 1024K)"
-o " sets transient program memory owner:
MCB(seg), nuPSP(seg)"
process
-b " sets process shell buffer
size: (0 - 127)"
-e " toggles system environment
protection ON/OFF"
-h " toggles process hardware
priviledge ON/OFF"
-p " sets process priority: (0 - 31)"
Part II, The Debugger Shell page 3-13
C O M S O F T VMiX 286
remote
-c " selects remote channel"
-l " sets polled terminal login channel"
system
-m " toggles manager message displays
ON/OFF"
-s " toggles scheduler swapped task
processing ON/OFF"
-t " toggles scheduler clock processing
ON/OFF"
-w " sets shutdown wait delay: seconds"
terminal
-t " sets terminal type: (0 - 9)"
video
-c " sets video background/foreground
color"
-C " sets window color attribute"
-m " sets video mode (0 - 16)"
-s " toggles status line display ON/OFF"
-w " sets root window size:
y0, x0, y1, x1"
-W " auto partitions (1 - 4) task windows
(Shift-Tab toggles kbd)"
Part II, The Debugger Shell page 3-14
C O M S O F T VMiX 286
DESCRIPTION:
set pool
-a " adjusts transient program memory:
MCB(seg), nusize(para)"
-m " sets transient program memory
partition size: (0 - 1024K)"
-o " sets transient program memory owner:
MCB(seg), nuPSP(seg)"
The -m switch can be used to
control the amount of memory .COM or
.EXE programs can grab, without the need
to use exemod.exe, an MSDOS utility, to
modify the headers of .EXE programs.
The command syntax is:
set pool -m [ max. K bytes ]
where, the maximum number of K bytes
specified limits the amount of memory
that a program can allocate as its own.
For example, set pool -m128<RETURN>, will
limit all programs loaded thereafter to
a maximum of 128K bytes.
Part II, The Debugger Shell page 3-15
C O M S O F T VMiX 286
The -a switch is provided with the
'set pool' command, to allow for the
release of memory previously allocated
by MSDOS or to increase the size of an
MSDOS memory control block. This option
can also be used to increase or decrease
a VMiX memory control block, and hence
the number of pages of memory in the
paged memory pool. The function's
performance depends on whether the
segement address passed is for an MSDOS
MCB, or a VMiX MCB. In the later case,
the paged memory pool is affected. This
can be a dangerous option. To help in
determining the arguments for this
switch, use the debugger shell's
'examine' token. The debugger shell
will list the MSDOS memory control
blocks with the command examine mcb.
This command will list the segment
address of each MCB and their size in 16
byte paragraphs.
The command syntax is:
set pool -a [ MCB address
[ / nusize ] ]
where, the segment address of the MCB
has been obtained using the debugger
shell, and nusize is the new requested
size in paragraphs for the block. The
parameters can be entered in
hexadecimal, using the format 0x????
(example, set pool -a 0x26F0 0xAF8).
Part II, The Debugger Shell page 3-16
C O M S O F T VMiX 286
The -o switch is provided with the
'set pool' command, to allow for the
change of ownership of memory previously
allocated by MSDOS. Some programs when
loaded by MSDOS allocate all available
memory. This is characterized by an
'end' MCB block that has been assigned
the PSP segment of the program, as its
owner.
Normally, the 'end' MCB holds
available memory and has a NULL PSP (0)
for its owner (use exam mcb from the
debugger shell to examine the memory
chain). You should next use the utility
monitor to determine that the program
has not allocated stack space in the
area covered by the 'end' MCB. After
this is verified, it will be safe to use
the -o switch and recover the 'end'
memory. To free the memory, set the PSP
owner to 0000. Sometimes, a better
solution is to deallocate some of the
memory with the -a switch, since the
process owner could be using some of the
'end' MCB memory.
The command syntax is:
set pool -o [ MCB address
[ / nuPSP ] ]
where, the segment address of the MCB
has been obtained using the debugger
shell, and nuPSP is the new requested
PSP segment to own the block. The
parameters can be entered in
hexadecimal, using the format 0x????
(example, set pool -o 0x65F0 0).
Part II, The Debugger Shell page 3-17
C O M S O F T VMiX 286
set video
-c " sets video background/foreground
color"
-C " sets window color attribute"
-m " sets video mode (0 - 16)"
Screen COLORS, in VMiX are set with
switches -c and -C, in text modes, and
in graphics modes.
Alphanumeric Text Modes:
The command syntax is:
set video -c [ color code ]
set video -C [ color code ]
The color code is a 2 digit hexadecimal
number of the form:
0xbf
where, b is the background color key
and f is the foreground color key,
selected fron the table below. To use
this method, the color code argument
must be entered in hexadecimal format.
Because the argument is in hexadecimal,
bf must be preceeded by an '0x'.
Part II, The Debugger Shell page 3-18
C O M S O F T VMiX 286
Color Keys
b backgrounds f foregrounds
0 black 0 black 8 gray
1 blue 1 blue 9 lt. blue
2 green 2 green A lt. green
3 cyan 3 cyan B lt. cyan
4 red 4 red C lt. red
5 magenta 5 magenta D lt. mag
6 brown 6 brown E yellow
7 white 7 white F brt white
B/W Graphics Modes:
The command syntax is:
set video -c [ color code ]
set video -C [ color code ]
The color code is a decimal or hexa-
decimal number which represents the
pixels on(1) or off(0) binary pattern
on the screen. See the color code table
given below.
Part II, The Debugger Shell page 3-19
C O M S O F T VMiX 286
Color Codes
decimal hexadecimal
0 0x0 00000000 black
85 0x55 01010101 gray
170 0xAA 10101010 gray
255 0xFF 11111111 white
Part II, The Debugger Shell page 3-20
C O M S O F T VMiX 286
set video
-w " sets root window size:
y0, x0, y1, x1"
The -w switch is used to specify
the bounds of a new root window. A root
window is where all user dialog with the
operating system takes place. An 'exec'
call, when the video mode has been set
to graphics mode, will display within
the root window, since graphics modes
bypass the ROM BIOS. An 'exec' call in
alphanumeric mode could, in some cases
take over the entire screen.
0
----------------------------------------------------------
| VMiX.286 1.4X Copyright ComSoft, Inc. 1987 |
|----------------------------------------------------------|
| |
| |
r | TOP left corner |
| *---------------------------- |
Y o | |y,x | |
| | WINDOW | |
w | | | |
| | y,x| |
| ----------------------------* |
| BOTTOM right corner |
| |
| |
24 ----------------------------------------------------------
0 column 79
X
(Fig. 4)
Part II, The Debugger Shell page 3-21
C O M S O F T VMiX 286
The command syntax is:
set video -w [ [ top row ]
[ / top col ]
[ / bot row ]
[ / bot col ] ]
set video
-W, " auto partitions (1 - 4) task windows
(Shift-Tab toggles kbd)"
To support multitasking from the
console (up to 4 windows) or a VT-100
terminal (up to 2 windows), the -W
switch is provided. Note that the 'W'
must be typed in upper-case, to
distinguish it from the manual set
window command, described above.
The command syntax is:
set video -W
This command is sensitive to the number
of channels that have been assigned to
COMM = 0, the console. It uses this
count to determine the number of windows
to divide the screen into.
The set video -W command, is intended to
work in cunjunction with the hot key,
Shift-Tab. This console key combination
will move, in round-robin fashion, the
active window/channel which owns the
console keyboard. All tasks running in
the windows will execute concurrently in
the background, regardless of which one
owns the console keyboard.
Part II, The Debugger Shell page 3-22
C O M S O F T VMiX 286
The nominal set of commands needed
to start a background/windowed task at
the VMiX console, manually, is:
debug : will get you to the debugger
set system -m will enable messages
assign srcsink 0 : will grab a new
console (device 0)
channel
quit : will return to the root shell
spawn -c???? set video -W / exec .....
will spawn a new background
task to channel ???? provided by
assign and partition the screen
(press Shift-Tab to move the keyboard
to the new task)
The above sequence can be replaced by
the simpler to use, single command:
dosjob .....
where ..... is the same user task string
used with spawn, above.
dosjob set video -W / exec .....
NOTE: The VMiX status line (set video -s)
will display the current console vio
channel (ie., where the keyboard is
active).
Part II, The Debugger Shell page 3-23
C O M S O F T VMiX 286
NAME: quit
OUTLINE:
Purpose: To terminate the shell and
exit.
DESCRIPTION:
The debugger shell token 'quit'
decrements the shell level by one,
terminates the debugger shell, and
returns to the previous shell.
Part II, The Debugger Shell page 3-24
C O M S O F T VMiX 286
NAME: monitor.exe
OUTLINE:
monitor " displays process control
block information"
-p " displays information on the
VMiX paged memory control
blocks"
-r " monitors process registers
continuously: process id"
DESCRIPTION:
monitor
-r " monitors process registers
continuously: process id"
The command syntax is:
monitor [ -r ] [ process id ]
The VMiX 'monitor' utility accepts
several command line inputs. If the
switch '-r' is not given, the process
whose pid is specified is displayed. If
no process id is given, the utility will
ask for a pid to be supplied. This
command displays the process control
block and the saved context registers.
Part II, The Debugger Shell page 3-25
C O M S O F T VMiX 286
When the '-r' switch is included
before the process id, the process
registers will be continuously monitored
until the <Esc> key or <Ctrl> <Break>
are pressed.
While in the register mode, pressing
<Ctrl> <s> will put the process being
viewed to sleep. Pressing <Ctrl> <q>
will wake the process.
Part II, The Debugger Shell page 3-26
APPENDICIES
Appendices page A-1
Appendices page A-2
APPENDIX
A
RELEASE NOTES V1.4X
Appendix A, Release Notes page A-3
Appendix A, Release Notes page A-4
Appendix A, Release Notes page A-5
Appendix A, Release Notes page A-6
RELEASE NOTES
The distribution file READ.ME includes
the new release changes for this version.
PROBLEM REPORTS
TAR10 When running BASIC or BASICA
interpreters from a dumb terminal, the
command buffer is not cleared correctly
after a carriage return, leaving the
previous command in the buffer. When
the next command typed is shorter than
the previous, a Syntax Error will
result. To correct this situation,
press the <Esc> key to clear the buffer.
TAR11 MicroSoft WINDOWS will not start
correctly unless the current VMiX video
mode is set to 3. Turbo Pascal will
start correctly in graphics modes, but
the editor will fail, so also set VMiX
video mode to 3 before an 'exec' of
TURBO. BASIC will start correctly in
graphics modes, but will not respond to
the keyboard.
TAR13 MicroSoft WINDOWS with a bus
mouse driver will crash, because changes
the driver does to the 8259 set-up are
not compatible with VMiX. This will be
corrected in a future release. WINDOWS
with a serial mouse will work correctly.
Appendix A, Release Notes page A-7
TAR14 Pressing <Ctrl><F> from a terminal
will toggle-in IBM PC function key
emulation (emulated by the digit keys),
and also provide the [Ins] and [Del]
keys. Using the [Ins] and [Del] keys
(emulated by ^I and ^D) with the BASIC
editor will crash the user.
TAR40 Some communication programs, like
XTALK will multitask with VMiX. Since
most communication programs write
directly to video memory, they should
execute at the console. and be started
with the dosjob -W command. Care should
used not have your second user on a COMM
port which is equal to the default port
for the communications program, to avoid
a port re-initialization. XTALK starts
on COM1, so put your second user on COM2.
TAR41 WORDSTAR 3.2, which does not write
directly to video memory, will execute
correctly from a second user at a COMM
port. However, exit from this version
of WORDSTAR, will crash that user; again
because of memory management problems at
deallocation time. To correct this,
terminate the WSTAR image from another
user shell utilizing the 'kill' token.
TAR42 CODEVIEW writes directly to video
memory, so use it only at the console.
Appendix A, Release Notes page A-8
TAR70 Speed-up boards that add an 80286
to a system, will not operate correctly
with VMiX because the software expects
an AT bus for protected mode operations.
If the CPU is an 8088 or 8086, VMiX
will detect a non 286/386 CPU and will
not initalize protected mode functions
and stay in real mode. The same is true
of some clones which use an XT bus with
the 80286. To force VMiX to ignore an
80286/386 processor and force 8086 mode,
invoke VMiX with the vm_boot -r option.
TAR81 With the 'exec' command, any VMiX
task can either change the default disk
or set a new PATH. VMiX keeps only one
global default disk and path because of
the overhead to maintain a different one
for each task. It is therefore, possible
for one task to trash another that
expected its own, previously set,
default disk and/or PATH. Set your path
once, for all the tasks your system
should accommodate.
Appendix A, Release Notes page A-9
Appendix A, Release Notes page A-10
APPENDIX
C
TECHNICAL INFORMATION
Appendix C, Technical Info page C-1
Appendix C, Technical Info page C-2
Appendix C, Technical Info page C-12
VMiX GLOBAL DATA
04-07-87
Appendix C, VMiX Global Data page C-13
Appendix C, VMiX Global Data page C-14
io0us_addr6845 - Port address of video controller CSR
io0i_bwinbot - Current banner window bot right(row col)
io0i_bwintop - Current banner window top left(row col)
io0as_chantab[ ] - I/O channel Control Block Table
io0b_chrxsiz - Current pixels per font character
io0b_chrysiz - Current scan lines per font character
io0i_colorbg - Current video background color
io0i_colorfg - Current video foreground color
io0b_colvmax - Maximum number of video columns
io0i_conbg - Console background color
io0i_confg - Console foreground color
io0i_conwn - Console window background color
io0ui_comm - Asynch comm port BIOS device id
io0ui_commax - Maximum number of logable comm ports
io0ai_commbuf[ ] - Comm object _ttyin_event buffers
io0b_currtmod - Current TTY screen mode
io0i_currtsiz - Current TTY size 0x174F (row col)
io0pc_currvbuf - Current console video buffer address
io0b_currvfnt - Current console font
io0b_currvmod - Current console mode
io0i_currvsiz - Current console size 0x184F (row col)
io0as_drvtab[ ] - Driver Setup Block Table
io0ap_fontab[ ] - Character Font Table
io0i_gcurx - Current graphics cursor x position
io0i_gcury - Current graphics cursor y position
io0ps_irphead - Pointer to I/O Request Packets chain head
io0i_hascon - Process owns console flag
io0ui_nextchan - Next available I/O channel
io0ui_nextuid - Next available object id
io0ui_nextdrv - Next available driver table entry
io0ac_objnam[ ] [ ] - Object Name Table
io0as_objtab[ ] - Object Control Block Table
io0ui_regenlen - Length of Video RAM
io0b_rowvmax - Maximum number of video rows
io0i_statlin - Status line display flag
io0ps_stdirp - Pointer to STDIO chan's I/O Request head
io0b_stormode - Shutdown restore BIOS video mode
io0b_tcurx - Current text cursor x position
io0b_tcury - Current text cursor y position
io0ps_tdb - Pointer to io0as_tdbtab[ ]
Appendix C, VMiX Global Data page C-15
io0ui_termmax - Maximum terminal description blocks
io0as_tdbtab[ ] - Terminal type Description Block Table
io0b_vmode - Current BIOS video mode
ker0us_asmcode - Kernel assembly code segment
ker0us_asmdata - Kernel assembly data segment
ker0us_code - Kernel C code segment
ker0us_data - Kernel C data segment
ker0i_debug - Manager's messages flag
ker0i_defdrv - Current default drive BIOS device id
ker0i_dos - MSDOS version number
ker0i_error - Kernel error code
ker0i_inbios - BIOS entry semaphore
ker0i_infdos - Foreign DOS (MSDOS) entry semaphore
ker0us_initoff - Initialize new stack offset
ker0us_initseg - Initialize new stack segment
ker0pf_int09 - Pointer to keyboard ISR
ker0us_intds - Interrupt data segment
ker0us_intsp - Interrupt stack pointer
ker0us_intss - Interrupt stack segment
ker0us_kerds - Kernel C data segment
ker0us_kersp - Kernel C stack pointer
ker0us_kerss - Kernel C stack segment
ker0i_lockbios - Locks BIOS entry
ker0i_lockfdos - Locks foreign dos (MSDOS) entry
ker0i_p286 - Host machine id flag
ker0i_remote - Termination mode
ker0i_rootshl - Top level shell active flag
ker0ps_savregs - Pointer to temporary REGS Kernel area
ker0i_shllev - Current process' shell depth level
ker0ui_shutcnt - Shutdown delay count (SECs)
ker0ui_stathw - BIOS hardware status
ker0ps_vmpsp - Pointer to VMiX's PSP
ker0s_vmpsp - VMiX's Program Segment Prefix
mem0ui_exalloc - Maximum para available to next .exe image
mem0ps_ldt - Pointer to LDT tables
mem0as_ldttab[ ] [ ] - Local Descriptor Table
Appendix C, VMiX Global Data page C-16
mem0ui_maxpge - Maximum pages in memory pool
mem0ui_maxpara - Maximum available para of physical memory
mem0ps_mcbhead - Pointer to memory chain head
mem0ps_mcbtail - Pointer to end memory control block
mem0us_page0 - Segment address of start of paged memory
mem0as_pgetab[ ] [ ] - Paged Memory Table
mem0us_toppara - Segment address of top physical memory
sch0ui_clkcnt - Timer tick count delay
sch0ui_clkdiff - Number of clock deferred ticks to post
sch0i_clkflg - Scheduler process clock ticks flag
sch0ui_clktick - Current clock tick
sch0ui_currpid - Current process id
sch0us_ctxoff - Current process task state store offset
sch0us_ctxseg - Current process task state store segment
sch0ui_nextpid - Next available process id
sch0ui_numproc - Current number of active processes
sch0ui_preempt - Preempt process quantum flag
sch0us_procsp - Current process stack pointer
sch0us_procss - Current process stack segment
sch0as_proctab[ ] - Process table
sch0i_tmqempty - Timer queue is empty flag
sch0i_tmqhdkey - Timer queue head element delta key
shl0as_argtab[ ] [ ] - Argument switches tables
shl0i_bufsiz - Current shell input buffer size
shl0ps_debtok[ ] - Pointer to debug shell tokens
shl0ps_remarg[ ] - Pointer to remote token switches
shl0ps_shltok[ ] - Pointer to root shell tokens
shl0ps_spwarg[ ] - Pointer to spawn token switches
shl0as_toktab[ ] [ ] - Shell token tables
Appendix C, VMiX Global Data page C-17
deb0ps_debarg[ ] - Pointer to debug token switches
deb0ps_examtok[ ] - Pointer to debug examine tokens
deb0ps_fntarg[ ] - Pointer to font token switches
deb0ps_iniarg[ ] - Pointer to init token switches
deb0ps_initok[ ] - Pointer to debug init tokens
deb0ps_pooarg[ ] - Pointer to pool token switches
deb0ps_proarg[ ] - Pointer to process token switches
deb0ps_settok[ ] - Pointer to debug set tokens
deb0ps_vidarg[ ] - Pointer to video token switches
Appendix C, VMiX Global Data page C-18
APPENDIX
D
STATUS MONITOR
Appendix D, Status Monitor page D-1
Appendix D, Status Monitor page D-2
VMiX CONSOLE STATUS
The VMiX status line displays at
the bottom of the console display when
selected from the Debugger Shell. To
toggle the status line use the command
set video -s from the Debugger Shell or
the command debug set video -s from the
Root Shell.
The status line displays:
the time
the current console vio channel
the current console video mode
the keyboard toggle keys
[Ins]
[Num Lock]
<Caps Lock>
[Scroll Lock]
all disk access errors
Appendix D, Status Monitor page D-3
PASSIVE DISK MONITOR
REPORTED DISK ERRORS
Bad drive/command - This error is caused
by an invalid drive number or disk
driver command.
AMark not found - The Data Address Mark
recorded just before the data area of a
sector could not be found. Indicates a
disk which has not been formatted, has
suffered magnetic damage, or it could
indicate defective media.
Write protected - A write protect tab is
present on the media or a fixed disk is
write protected. If there is no tab the
drive's sensor is probably bad or
misaligned.
Sector not found - The requested sector
number could not be found. If the
sector number was valid for the drive,
then defective media, alignment, or
format problems are probably to blame.
Drive reset fail - An attempt to reset
the specified drive failed.
Drive init fail - This error reflects a
problem with the drive parameter block.
It could indicate a controller action
that failed because of bad parameters.
Bad parameters could indicate an attempt
to initialize an invalid drive.
Appendix D, Status Monitor page D-4
DMA overrun - The controller could not
get DMA access to the data bus before
time ran out.
DMA boundary - DMA cannot read or write
across 64k segment boundaries. This is a
software driver error.
Bad sector (AT only) - An operation was
attempted on a sector flagged bad by the
low level formatter. Such areas should
have been marked bad in the FAT.
Bad track (PC/XT only) - An operation
was attempted on a track flagged bad by
the low level formatter. Such areas
should have been marked bad in the FAT.
Bad read CRC/EEC - The sector could not
be successfully read. Repeated attempts
will usually read a weak sector. A
common disk I/O error, possibly caused
by defective media, dirty heads, power
glitches, or misaligned drives. A write
to the sector will usually fix the
problem, except in the case of defective
media. Repeated CRC read errors are an
indication to the prudent user to back-
up his data to new media and/or replace
the current media where the data is
stored.
Soft error fixed - Reports that the
controller's 48bit EEC algorithm
successfully corrected a soft data error.
Controller fault - The controller had
not successfully completed the requested
command before time ran out.
Appendix D, Status Monitor page D-5
Track seek fail - Moving the drive head
to seek a requested cylinder was
unsuccessful. If the cylinder number
was valid for the drive, then a hardware
problem is probably to blame.
Drive unavailable - The time allowed for
an operation expired without a response
from the drive. MSDOS reports this error
as 'Drive not ready'.
Unknown error - An error code was
returned for which VMiX has no defined
error description.
Write fault (AT only) - Usually this
indicates a hardware problem with the
physical drive.
Status error (AT only) - The controller
status register indicated that an error
condition existed, but the error
register did not contain a valid error
code.
Sense fail (PC/XT only) -
Appendix D, Status Monitor page D-6
Appendix D, Status Monitor page D-7
Appendix D, Status Monitor page D-8